package net.aiotos.common.dto;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Map;

/**
 * 通信网关属性结构对象
 */
@Data
@NoArgsConstructor
public class IonodeDTO {
    /**
     * 网关描述
     */
    @JSONField(name = "description")
    private String description;
    @JSONField(name = "timestamp")
    private long timestamp;
    @JSONField(name = "owner")
    private String owner;
    /**
     * 网关设备实例列表
     */
    @JSONField(name = "properties")
    private Map<String, DeviceDTO> properties;
    /**
     * 网关在线状态
     */
    @JSONField(name = "on")
    private Boolean on;
    @JSONField(name = "name")
    /**
     * 网关名称
     */
    private String name;
    /**
     * 网关UUID
     */
    @JSONField(name = "gateway_uuid")
    private String gatewayUuid;
    @JSONField(name = "longitude")
    private String longitude;
    /**
     * 网关ID,一般SDK用不到，只会在HTTP API里面才会用到。
     */
    @JSONField(name = "id")
    private String id;
    @JSONField(name = "latitude")
    private String latitude;
    /**
     * 网关高级配置
     */
    @JSONField(name = "config")
    private JSONObject config;
    /**
     * 兼容处理，不常用。由框架统一处理
     */
    @JSONField(name = "body")
    private IonodeDTO body;
    /**
     * config字段结构类
     * @param tClass 用户自定义对象
     * @param <T>
     * @return
     */
    public final <T> T getConfig(Class<T> tClass) {
        return config.toJavaObject(tClass);
    }
}
